home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
taropyon
/
install
/
insttaro.c
< prev
next >
Wrap
Text File
|
1994-11-16
|
32KB
|
1,125 lines
/*************************************************************************
* [TaroPYON SoftWare collection]インストール処理
*************************************************************************/
#define _NO_HEWIN (0)
#define _NO_EDIA (1)
#define _NO_GSPLAY (2)
#define _NO_HE386 (3)
#define _NO_CCI (4)
#define _NO_DOSTOOL (5)
#define _NO_TOSTOOL (6)
#define _NUM_TAROSC (7)
char *_tarosc_aplname[_NUM_TAROSC] =
{
"HEwin" ,
"EDIA" ,
"GSPLAY" ,
"HE386" ,
"CCI" ,
"DOS tools",
"TownsOS tools"
};
char _tarosc_skey[_NUM_TAROSC] = /* ショートカットキー */
{ 'H',
'E',
'G',
'M',
'C',
'D',
'T'
};
char _tarosc_instdir[_NUM_TAROSC][128];
char _tarosc_defdir[128];
int _tarosc_fcopy_att;
int _hewin_swapDrv, _hewin_init;
int _edia_swapDrv;
int _gsplay_midi;
int _gsplay_rsmidi;
int _gsplay_internal;
int _tarosc_setinstdir(char *instdir);
int _tarosc_setapldir();
int _tarosc_set_fcopymode();
int _tarosc_check_config(int item_setup);
int _hewin_config(char *instdir, int item_setup);
int _hewin_install(char *instdir,int item_setup);
int _hewin_setup(char *instdir,int item_setup);
int _edia_config(char *instdir, int item_setup);
int _edia_install(char *instdir,int item_setup);
int _edia_setup(char *instdir,int item_setup);
int _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup);
int _chk_pathlist( char *pathlist, char *path );
int _gsplay_config(char *instdir, int item_setup);
int _gsplay_install(char *instdir,int item_setup);
int _gsplay_setup(char *instdir,int item_setup);
int _he386_install(char *instdir,int item_setup);
int _cci_install(char *instdir,int item_setup);
int _dostool_install(char *instdir,int item_setup);
int _tostool_install(char *instdir,int item_setup);
char *get_inst_taro_mnu()
{
char *mnu;
if ( (mnu = MNU_open()) == NULL )
return (NULL);
MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "tarosc_install" , 0, "TaroPYON SoftWare Collection");
MNU_datAdd( mnu, 0, 'S', Rom16x16, 0, "tarosdk_install", 0, "サイドワークプログラム集" );
MNU_datAdd( mnu, 0, 0 , Rom16x16, 0, "" , 0, NULL );
MNU_datAdd( mnu, 0, '1', Rom16x16, 0, "splib_install" , 0, "ライブラリ&ソース 1 (SPLIB)" );
MNU_datAdd( mnu, 0, '2', Rom16x16, 0, "silib_install" , 0, "ライブラリ&ソース 2 (SILIB)" );
MNU_datAdd( mnu, 0, '3', Rom16x16, 0, "dtalib_install" , 0, "ライブラリ&ソース 3 (DTALIB)" );
#ifndef _FC9
MNU_datAdd( mnu, 0, '4', Rom16x16, 0, "lhadll_install" , 0, "ライブラリ&ソース 4 (LHA.DLL)");
#endif
MNU_setPosition(mnu,-1);
return (mnu);
}
int tarosc_install()
{
int ret, i, att, len, drv, argc, item_setup;
char *fp;
char **argv, *p, *typename;
char *instdir;
char *softname;
char srcdir[128], instfile[128];
char helpfn[128];
char item_ttl[80],item_prog[16], item_para[128];
int item_att;
char *dlgTxm;
char tmp[256], tmp2[256];
instdir = _tarosc_defdir; instdir[0] = '\0';
softname = "TaroPYON SoftWare collection";
_tarosc_fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE | FCOPY_ATT_NOENDMSG;
_TOP:
syl_putf(softname);
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"%s をインストールします。", softname );
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC ,
1, "", 0, "インストール : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'H' , KA_H ,
2, "inst_help", "/TAROPYON/tarocol.doc", "説明 : [H]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
3, "", 0, "取消 : [取消]");
DlgTxm_setSize(dlgTxm,320,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
do
{
ret = DlgTxm_start(dlgTxm);
} while ( ret == 2 );
DlgTxm_close(dlgTxm);
if ( ret != 1 )
goto _RET;
/* インストール先指定 --------------------------------------------*/
_SETDIR:
if ( _tarosc_setinstdir(instdir) )
goto _TOP;
if ( _tarosc_setapldir() < 0 )
goto _TOP;
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"以下のディレクトリにインストールします。" );
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
ret = 0;
for ( i = 0; i < _NUM_TAROSC; ++i )
{
if ( _tarosc_instdir[i][0] )
{
ret = 1;
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_LEFT,
" %-14s [%s]", _tarosc_aplname[i], _tarosc_instdir[i] );
}
}
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール1 … ファイルを複写してTownsMENU にアイテム登録");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール2 … ファイルを複写(アイテム登録はしない) ");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC , 1, "", 0, "インストール1 : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'C' , KA_C , 2, "", 0, "インストール2 : [C]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL, 3, "", 0, "取消 : [取消]");
DlgTxm_setSize(dlgTxm,320,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
ret = DlgTxm_start(dlgTxm);
DlgTxm_close(dlgTxm);
if ( ret != 1 && ret != 2 )
goto _TOP;
item_setup = (ret == 1 ? 1 : 0);
/* カスタマイズ ------------------------------------------------*/
_tarosc_set_fcopymode();
if ( _tarosc_instdir[_NO_HEWIN ][0] ) _hewin_config( _tarosc_instdir[_NO_HEWIN ], item_setup);
if ( _tarosc_instdir[_NO_EDIA ][0] ) _edia_config( _tarosc_instdir[_NO_EDIA ], item_setup);
if ( _tarosc_instdir[_NO_GSPLAY ][0] ) _gsplay_config( _tarosc_instdir[_NO_GSPLAY ], item_setup);
/* 設定確認 --------------------------------------------------------*/
ret = _tarosc_check_config(item_setup);
if ( ret < 0 )
goto _TOP;
if ( ret == 0 )
goto _SETDIR;
/* インストール開始 ------------------------------------------------*/
if ( _tarosc_instdir[_NO_HEWIN ][0] ) _hewin_install( _tarosc_instdir[_NO_HEWIN ], item_setup);
if ( _tarosc_instdir[_NO_EDIA ][0] ) _edia_install( _tarosc_instdir[_NO_EDIA ], item_setup);
if ( _tarosc_instdir[_NO_GSPLAY ][0] ) _gsplay_install( _tarosc_instdir[_NO_GSPLAY ], item_setup);
if ( _tarosc_instdir[_NO_HE386 ][0] ) _he386_install( _tarosc_instdir[_NO_HE386 ], item_setup);
if ( _tarosc_instdir[_NO_CCI ][0] ) _cci_install( _tarosc_instdir[_NO_CCI ], item_setup);
if ( _tarosc_instdir[_NO_DOSTOOL][0] ) _dostool_install(_tarosc_instdir[_NO_DOSTOOL], item_setup);
if ( _tarosc_instdir[_NO_TOSTOOL][0] ) _tostool_install(_tarosc_instdir[_NO_TOSTOOL], item_setup);
install_end( softname, 0 );
_RET:
syl_clear();
return (NORMAL);
}
int _tarosc_setinstdir(char *instdir)
{
char tmp[256];
if ( APL_setInstallDir(instdir,"インストール先指定") )
return (ERR);
strcpy(tmp,instdir);
add_path_fn(tmp,""); /* パス名の最後を'/' に */
sprintf( _tarosc_instdir[_NO_HEWIN ], "%s%s", tmp, "HEWIN" );
sprintf( _tarosc_instdir[_NO_EDIA ], "%s%s", tmp, "EDIA" );
sprintf( _tarosc_instdir[_NO_GSPLAY ], "%s%s", tmp, "GSPLAY" );
sprintf( _tarosc_instdir[_NO_HE386 ], "%s%s", tmp, "HE386" );
sprintf( _tarosc_instdir[_NO_CCI ], "%s%s", tmp, "CCI" );
sprintf( _tarosc_instdir[_NO_DOSTOOL ], "%s%s", tmp, "DOSTOOL");
sprintf( _tarosc_instdir[_NO_TOSTOOL ], "%s%s", tmp, "TOSTOOL");
return (NORMAL);
}
int _tarosc_setapldir()
{
char *mnu, *mnuapl[_NUM_TAROSC];
char *dir;
int i, flag, ret;
/* サブメニュー設定 */
for ( i = 0; i < _NUM_TAROSC; ++i )
{
if ( (mnuapl[i] = MNU_open()) != NULL )
{
MNU_datAdd( mnuapl[i], 0, '1', Rom16x16, i, "_setdir_tarosc" , NULL, "Set directory");
MNU_datAdd( mnuapl[i], 0, '0', Rom16x16, i, "_noinstall_tarosc", NULL, "No install" );
MNU_setPosition(mnuapl[i],-1);
}
}
do
{
if ( (mnu = MNU_open()) == NULL )
return (ERR);
for ( i = 0; i < _NUM_TAROSC; ++i )
{
dir = _tarosc_instdir[i];
if ( *dir == '\0' )
dir = "No install";
MNU_mnuAdd( mnu, 0, _tarosc_skey[i], Fnt16x16, mnuapl[i],
"%-14s [%s]", _tarosc_aplname[i], dir);
}
MNU_datAdd( mnu, 0, 0 , NULL , 0, "", 0, NULL );
MNU_datAdd( mnu, 0, 'S', Rom16x16, 1, "", 0, " <<< 設定終了 >>>");
MNU_setPosition(mnu,DLGPOS_CENTER_OF_SCREEN);
ret = MNU_start(mnu);
MNU_close(mnu);
MNU_datClear(mnu);
} while ( ret == 0 );
flag = 0;
for ( i = 0; i < _NUM_TAROSC; ++i )
{
if ( _tarosc_instdir[i][0] )
flag = 1;
MNU_datClear( mnuapl[i] );
}
if ( flag == 0 )
ret = -1;
return (ret);
}
int _setdir_tarosc(int evNo, char *evdat)
{
char *aplname;
char *instdir;
instdir = _tarosc_instdir[evNo];
if ( *instdir == '\0' )
strcpy(instdir,_tarosc_defdir);
APL_setInstallDir(instdir,"%s インストール先指定", _tarosc_aplname[evNo]);
return (0);
}
int _noinstall_tarosc(int evNo, char *evdat)
{
_tarosc_instdir[evNo][0] = '\0';
return (0);
}
/*************************************************************************
* ファイル複写モード
*************************************************************************/
int _tarosc_set_fcopymode()
{
int ret;
char *dlgTxm;
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,"ファイル複写動作の設定");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール時のファイル複写動作を指定してください。");
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"ノーマル … 通常の複写 ");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"日付比較 … タイムスタンプを比較して新しいファイルのみ複写");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC ,
0, "", 0, "ノーマル : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'T' , KA_T ,
1, "", 0, "日付比較 : [T]");
DlgTxm_setSize(dlgTxm,480,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
do
{
ret = DlgTxm_start(dlgTxm);
} while ( ret < 0 );
DlgTxm_close(dlgTxm);
_tarosc_fcopy_att = FCOPY_ATT_SUBDIR | FCOPY_ATT_TIMESTAMP | FCOPY_ATT_CHK_OVERWRITE | FCOPY_ATT_NOENDMSG;
if ( ret )
_tarosc_fcopy_att |= FCOPY_ATT_CHK_TIMESTAMP;
return (NORMAL);
}
/*************************************************************************
* 設定確認
*************************************************************************/
int _tarosc_check_config(int item_setup)
{
int ret, i;
char *dlgTxm;
char tmp[256], *msg;
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,"設定の確認");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" 実行ファイルのアイテム登録 … [%s]",
item_setup ? "行う" : "行わない" );
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" ファイル複写動作モード … [%s]",
(_tarosc_fcopy_att & FCOPY_ATT_CHK_TIMESTAMP) ? "日付比較" : "ノーマル" );
if ( _tarosc_instdir[_NO_HEWIN][0] )
{
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" HEwin 初期設定 … [%s]",
_hewin_init ? "する" : "しない");
if ( item_setup )
{
if ( _hewin_swapDrv < 0 )
msg = "指定なし";
else
{
msg = tmp;
sprintf(msg,"%c:", _hewin_swapDrv);
}
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" HEwin 作業ドライブ … [%s]", msg);
}
}
if ( _tarosc_instdir[_NO_EDIA][0] )
{
if ( item_setup )
{
if ( _edia_swapDrv < 0 )
msg = "指定なし";
else
{
msg = tmp;
sprintf(msg,"%c:", _hewin_swapDrv);
}
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" EDIA 作業ドライブ … [%s]", msg);
}
}
if ( _tarosc_instdir[_NO_GSPLAY][0] )
{
if ( item_setup && (_gsplay_midi >= 0 || _gsplay_rsmidi || _gsplay_internal >=0) )
{
if ( _gsplay_midi < 0 )
{
msg = "未使用";
} else
{
msg = tmp;
sprintf(msg,"port %c", _gsplay_midi + 'A' );
}
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" GSPLAY 演奏データ出力先 … [MIDI card (%s)]", msg);
if ( _gsplay_rsmidi >= 0 )
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" … [RS-232C MIDI]");
if ( _gsplay_internal >= 0 )
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_LEFT,
" … [内蔵音源]");
}
}
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC ,
1, "", 0, "インストール : [実行]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'R' , KA_R ,
2, "", 0, "再設定 : [R]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\x1B', KA_CANCEL,
3, "", 0, "取消 : [取消]");
DlgTxm_setSize(dlgTxm,480,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
ret = DlgTxm_start(dlgTxm);
DlgTxm_close(dlgTxm);
switch ( ret )
{
case 1:
return (1);
case 2:
return (0); /* 再設定 */
default:
return (-1); /* 取消 */
}
}
/*************************************************************************
* HEwin
*************************************************************************/
int _hewin_config(char *instdir, int item_setup)
{
int ret;
char *dlgTxm;
char *dlgGets;
char buf[8];
_hewin_init = 0;
dlgTxm = DlgTxm_open(ColBoxNormal);
DlgTxm_setTitle(dlgTxm,Fnt16x16,"HEwin 環境設定");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"インストール時にHEwin の初期設定を行いますか?");
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER, "");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"新規にHEwin をインストールするときは[初期設定]を指定してください。");
DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
"※ 初期設定を指定すると、既にインストールされている");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,
" HEwin の設定情報は失われます。 ");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'I' , KA_I ,
1, "", 0, "初期設定 : [I]");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, 'N' , KA_N ,
0, "", 0, "なし : [N]");
DlgTxm_setSize(dlgTxm,320,40);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
do
{
ret = DlgTxm_start(dlgTxm);
} while ( ret < 0 );
DlgTxm_close(dlgTxm);
_hewin_init = ret;
_hewin_swapDrv = -1;
if ( item_setup )
{
if ( (dlgGets = DlgGets_open()) == NULL )
return (ERR);
DlgGets_setTitle(dlgGets,Fnt16x16,"HEwin 環境設定");
buf[0] = '\0';
DlgGets_setSize(dlgGets,320,64);
DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
DlgGets_setPosition(dlgGets,DLGPOS_CENTER_OF_SCREEN); /* 画面中央 */
if ( DlgGets_start(dlgGets,3,buf) == NORMAL )
{
if ( isalpha(buf[0]) )
_hewin_swapDrv = toupper(buf[0]);
else
_hewin_swapDrv = -1;
}
DlgGets_close(dlgGets);
}
return (NORMAL);
}
int _hewin_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char *item_prog, *item_ttl, item_para[128];
int item_att;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/HEWIN";
instfile = "*.exp *.cci *.c *.h *.rex *.dll *.exe *.doc *.hlp *.lst *.tbl";
item_prog = "HEWIN.EXP";
item_ttl = "HEwin";
item_para[0] = '\0';
item_att = 2;
syl_putf("HEWIN INSTALL");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
if ( _hewin_init )
{
instfile = "*.apl *.env *.ini *.itm *.tif";
att = _tarosc_fcopy_att & (~FCOPY_ATT_SUBDIR);
ret = FCOPY_exec(att, srcdir, instfile, instdir);
}
/* 環境設定 --------------------------------------------------------*/
syl_putf("HEWIN CUSTOMIZE");
_hewin_setup(instdir,item_setup);
if ( ret == NORMAL && item_setup != 0 )
{ /* アイテム登録 */
syl_putf("HEWIN ITEM SETUP");
if ( isalpha(_hewin_swapDrv) )
sprintf(item_para,"-swapDrv %c", _hewin_swapDrv);
drv = toupper(instdir[0]) - 'A';
strcpy(tmp,instdir);
add_path_fn(tmp,item_prog);
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
return (ret);
}
int _hewin_setup(char *instdir,int item_setup)
{
return _hewin_edia_setup("hewin.mac", instdir, item_setup);
}
/*************************************************************************
* EDIA
*************************************************************************/
int _edia_config(char *instdir, int item_setup)
{
int ret;
char *dlgGets;
char buf[8];
_edia_swapDrv = -1;
if ( item_setup )
{
if ( (dlgGets = DlgGets_open()) == NULL )
return (ERR);
DlgGets_setTitle(dlgGets,Fnt16x16,"EDIA 環境設定");
buf[0] = '\0';
DlgGets_setSize(dlgGets,320,64);
DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
DlgGets_setPosition(dlgGets,DLGPOS_CENTER_OF_SCREEN); /* 画面中央 */
if ( DlgGets_start(dlgGets,3,buf) == NORMAL )
{
if ( isalpha(buf[0]) )
_edia_swapDrv = toupper(buf[0]);
else
_edia_swapDrv = -1;
}
DlgGets_close(dlgGets);
}
return (NORMAL);
}
int _edia_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char *item_prog, *item_ttl, item_para[128];
int item_att;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/EDIA";
instfile = "*.exp *.cci *.c *.h *.rex *.dll *.doc";
item_prog = "EDIA.EXP";
item_ttl = "EDIA";
item_para[0] = '\0';
item_att = 2;
syl_putf("EDIA INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
/* 環境設定 */
syl_putf("EDIA CUSTOMIZE");
_edia_setup(instdir,item_setup);
if ( ret == NORMAL && item_setup != 0 )
{ /* アイテム登録 */
syl_putf("EDIA ITEM SETUP");
if ( isalpha(_edia_swapDrv) )
sprintf(item_para,"-swapDrv %c", _edia_swapDrv);
drv = toupper(instdir[0]) - 'A';
strcpy(tmp,instdir);
add_path_fn(tmp,item_prog);
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
return (ret);
}
int _edia_setup(char *instdir,int item_setup)
{
return _hewin_edia_setup("edia.mac", instdir, item_setup);
}
int _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup)
{
char *p, *s, *dir, *pathInst, fnMac[256], path[1024];
char *MACROKEY_EXPSEARCH_PATH;
char *amac;
pathInst = instdir;
MACROKEY_EXPSEARCH_PATH = "Exp_search_path";
strcpy(fnMac,pathInst);
add_path_fn(fnMac,fn_mac);
if ( (amac = AMAC_allocWork(0)) == NULL )
return (ERR);
AMAC_load( amac, fnMac );
if ( (p = AMAC_getName( amac, MACROKEY_EXPSEARCH_PATH)) == NULL || *p == '\0' )
{
path[0] = '\0';
p = path;
dir = _tarosc_instdir[_NO_GSPLAY];
if ( *dir )
{
if ( p != path ) { *p = ';'; ++p; }
strcpy(p, dir);
p += strlen(dir);
}
dir = _tarosc_instdir[_NO_HE386];
if ( *dir )
{
if ( p != path ) { *p = ';'; ++p; }
strcpy(p, dir);
p += strlen(dir);
}
dir = _tarosc_instdir[_NO_CCI];
if ( *dir )
{
if ( p != path ) { *p = ';'; ++p; }
strcpy(p, dir);
p += strlen(dir);
}
dir = _tarosc_instdir[_NO_TOSTOOL];
if ( *dir )
{
if ( p != path ) { *p = ';'; ++p; }
strcpy(p, dir);
p += strlen(dir);
}
if ( p != path )
AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
} else
{ /* 既にパス設定が存在する */
strcpy(path,p);
dir = _tarosc_instdir[_NO_GSPLAY];
if ( _chk_pathlist(path,dir) == 0 )
{
strcat(path,";");
strcat(path,dir);
}
dir = _tarosc_instdir[_NO_HE386];
if ( _chk_pathlist(path,dir) == 0 )
{
strcat(path,";");
strcat(path,dir);
}
dir = _tarosc_instdir[_NO_CCI];
if ( _chk_pathlist(path,dir) == 0 )
{
strcat(path,";");
strcat(path,dir);
}
dir = _tarosc_instdir[_NO_TOSTOOL];
if ( _chk_pathlist(path,dir) == 0 )
{
strcat(path,";");
strcat(path,dir);
}
AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
}
AMAC_save( amac, fnMac, fn_mac);
AMAC_freeWork(amac);
return (NORMAL);
}
int _chk_pathlist( char *pathlist, char *path )
{
char s1[1024], s2[256];
strcpy(s1,pathlist); FS_strupr(s1);
strcpy(s2,path); FS_strupr(s2);
if ( strstr(s1,s2) == NULL )
return (0); /* なし */
else
return (1);
}
/*************************************************************************
* GSPLAY
*************************************************************************/
int _gsplay_config(char *instdir, int item_setup)
{
int ret;
char *mnu_midi, *mnu_internal, *mnu_rsmidi, *mnu;
char tmp[128], *msg;
_gsplay_midi = 0; /* port A */
_gsplay_rsmidi = -1;
_gsplay_internal = -1;
if ( item_setup )
{
mnu_midi = MNU_open();
mnu_rsmidi = MNU_open();
mnu_internal = MNU_open();
MNU_datAdd( mnu_midi , 0, 'A', Rom16x16, 0x01, "", NULL, "port A (card-1)");
MNU_datAdd( mnu_midi , 0, 'B', Rom16x16, 0x02, "", NULL, "port B (card-1)");
MNU_datAdd( mnu_midi , 0, 'C', Rom16x16, 0x03, "", NULL, "port C (card-2)");
MNU_datAdd( mnu_midi , 0, 'D', Rom16x16, 0x04, "", NULL, "port D (card-2)");
MNU_datAdd( mnu_midi , 0, 'E', Rom16x16, 0x05, "", NULL, "port E (card-3)");
MNU_datAdd( mnu_midi , 0, 'F', Rom16x16, 0x06, "", NULL, "port F (card-3)");
MNU_datAdd( mnu_midi , 0, 'G', Rom16x16, 0x07, "", NULL, "port G (card-4)");
MNU_datAdd( mnu_midi , 0, 'H', Rom16x16, 0x08, "", NULL, "port H (card-4)");
MNU_datAdd( mnu_midi , 0, 0 , NULL , 0, "", 0, NULL );
MNU_datAdd( mnu_midi , 0, 'O', Rom16x16, 0x00, "", NULL, "MIDI device not use");
MNU_setPosition(mnu_midi,-1);
MNU_datAdd( mnu_rsmidi , 0, '1', Rom16x16, 0x21, "", NULL, "ON 使う");
MNU_datAdd( mnu_rsmidi , 0, '0', Rom16x16, 0x20, "", NULL, "OFF 使わない");
MNU_setPosition(mnu_rsmidi,-1);
MNU_datAdd( mnu_internal, 0, '1', Rom16x16, 0x31, "", NULL, "ON 使う");
MNU_datAdd( mnu_internal, 0, '0', Rom16x16, 0x30, "", NULL, "OFF 使わない");
MNU_setPosition(mnu_internal,-1);
do
{
if ( (mnu = MNU_open()) == NULL )
break;
MNU_setTitle( mnu, Fnt16x16, "GSPLAY 演奏データ出力デバイス" );
if ( _gsplay_midi < 0 )
{
msg = "not use";
} else
{
msg = tmp;
sprintf(msg,"port %c",_gsplay_midi + 'A' );
}
MNU_mnuAdd( mnu, 0, 'M', Fnt16x16, mnu_midi , "MIDI [%s]", msg);
msg = (_gsplay_rsmidi < 0) ? "not use" : "ON";
MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_rsmidi , "RS-232C MIDI [%s]", msg);
msg = (_gsplay_internal < 0) ? "not use" : "ON";
MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_internal, "内蔵音源 [%s]", msg);
MNU_datAdd( mnu, 0, 0 , NULL , 0, "", 0, NULL );
MNU_datAdd( mnu, 0, 'S', Rom16x16, 0xFF, "", 0, " <<< 設定終了 >>>");
MNU_setPosition(mnu,DLGPOS_CENTER_OF_SCREEN);
ret = MNU_start(mnu);
if ( ret >= 0x01 && ret <= 0x08 )
{
_gsplay_midi = ret - 0x01;
} else
{
switch ( ret )
{
case 0x00: _gsplay_midi = -1; break;
case 0x20: _gsplay_rsmidi = -1; break;
case 0x21: _gsplay_rsmidi = 0; break;
case 0x30: _gsplay_internal = -1; break;
case 0x31: _gsplay_internal = 0; break;
}
}
MNU_close(mnu);
MNU_datClear(mnu);
} while ( ret != 0xFF );
MNU_datClear(mnu_midi );
MNU_datClear(mnu_rsmidi );
MNU_datClear(mnu_internal);
}
return (NORMAL);
}
int _gsplay_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char *item_prog, *item_ttl, item_para[128];
int item_att;
char tmp[256], tmp2[256], ttl[80];
srcdir = "/TAROPYON/GSPLAY";
instfile = "*.exp *.dat *.gsd *.doc *.mex *.mid *.mtk *.kok *.tif";
item_prog = "GSPLAY.EXP";
item_ttl = "GSPLAY/pure";
item_para[0] = '\0';
item_att = 2;
syl_putf("GSPLAY INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
/* 環境設定 */
syl_putf("GSPLAY CUSTOMIZE");
_gsplay_setup(instdir,item_setup);
if ( ret == NORMAL && item_setup != 0 )
{ /* アイテム登録 */
syl_putf("GSPLAY ITEM SETUP");
strcpy(tmp,instdir);
add_path_fn(tmp,item_prog);
if ( _gsplay_midi >= 0 )
{
item_ttl = "GSPLAY/pure (MIDI)";
sprintf(item_para,"-gsPort %c", _gsplay_midi + 'A');
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
if ( _gsplay_internal >= 0 )
{
item_ttl = "GSPLAY/pure (内蔵)";
strcpy(item_para,"-gsPort A -intPort A");
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
if ( _gsplay_rsmidi >= 0 )
{
item_ttl = "GSPLAY/pure (RS)";
strcpy(item_para,"-rsmidi -gsPort R");
item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
}
}
return (ret);
}
int _gsplay_setup(char *instdir,int item_setup)
{
return (NORMAL);
}
/*************************************************************************
* HE386
*************************************************************************/
int _he386_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/HE386";
instfile = "*.exp *.dll *.cci *.c *.h *.doc *.mml *.def";
syl_putf("HE386 INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
return (ret);
}
/*************************************************************************
* CCI
*************************************************************************/
int _cci_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/CCI";
instfile = "*.exp *.dll *.doc *.lst *.h *.c *.bat *.exe";
syl_putf("CCI INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
return (ret);
}
/*************************************************************************
* DOS tool
*************************************************************************/
int _dostool_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/DOSTOOL";
instfile = "*.exe *.doc";
syl_putf("DOS TOOL INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
return (ret);
}
/*************************************************************************
* TownsOS tool
*************************************************************************/
int _tostool_install(char *instdir,int item_setup)
{
int ret, att, len, drv;
char *srcdir, *instfile;
char tmp[256], tmp2[256];
srcdir = "/TAROPYON/TOSTOOL";
instfile = "*.exp *.dll *.doc";
syl_putf("TOS TOOL INSTALL START");
FS_chdrv( toupper(DirStart[0]) - 'A' );
if ( *srcdir == '\0' || *srcdir == '.' )
{
strcpy(tmp,DirStart);
ret = strlen(tmp);
if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
tmp[ret-1] = '\0';
} else
{
if ( FS_isDelim(*srcdir) )
strcpy(tmp,srcdir);
else
sprintf(tmp,"%s%s",DirStart, srcdir);
}
FS_getFullPn(tmp2,tmp);
srcdir = tmp2;
att = _tarosc_fcopy_att;
ret = FCOPY_exec(att, srcdir, instfile, instdir);
return (ret);
}
/*************************************************************************
* SIDEWORK TOOL
*************************************************************************/
int tarosdk_install()
{
static char *buf[4] =
{
"softname \"サイドワークプログラム集\"",
"instfile /TAROPYON/SDKTOOL \"*.exp *.doc\"",
"help SDKTOOL.GGG",
NULL
};
install_exec(buf);
return (0);
}
int splib_install()
{
static char *buf[4] =
{
"softname \"High C用ライブラリ (splib)\"",
"instfile /TAROPYON/SPLIB \"*.*\"",
"help splib.ggg",
NULL
};
install_exec(buf);
return (0);
}
int silib_install()
{
static char *buf[4] =
{
"softname \"High C用ライブラリ (silib)\"",
"instfile /TAROPYON/SILIB \"*.*\"",
"help silib.ggg",
NULL
};
install_exec(buf);
return (0);
}
int dtalib_install()
{
static char *buf[4] =
{
"softname \"DTA ライブラリ\"",
"instfile /TAROPYON/DTALIB \"*.*\"",
"help dtalib.ggg",
NULL
};
install_exec(buf);
return (0);
}
#ifndef _FC9
int lhadll_install()
{
static char *buf[4] =
{
"softname \"LHA ライブラリ (LHA.DLL)\"",
"instfile /TAROPYON/LHADLL \"*.*\"",
"help lhadll.ggg",
NULL
};
install_exec(buf);
return (0);
}
#endif